package com.common.config;

import com.common.retrofit.json.Data;
import com.lsz.deport.json.AndroidGitLib;
import com.lsz.deport.json.CheckUpdate;
import com.lsz.deport.json.GitUser;
import com.lsz.deport.json.MenuBean;
import com.lsz.deport.json.OrderBean;
import com.lsz.deport.json.OrderDetailBean;
import com.lsz.deport.json.OrderPayBean;
import com.lsz.deport.json.PayRequestBean;
import com.lsz.deport.json.ProductChoiceBean;
import com.lsz.deport.json.StartOrderBean;
import com.lsz.deport.json.UserEntity;
import com.lsz.deport.json.VIPMemberBean;
import com.lsz.deport.json.commodity.CommodityDataBean;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface MyApi {

    @FormUrlEncoded
    @POST("v1/trade/version/getVersionInfo")
    Observable<Data<CheckUpdate>> checkUpdate(@FieldMap Map<String, String> updateMap);

    @GET("https://api.github.com/users")
    Observable<List<GitUser>> getUsersPagesById(@Query("since") long userId, @Query("per_page") int perPage);

    @GET("https://api.github.com/search/repositories")
    Observable<AndroidGitLib> getUsersPagesByPage(@Query("q") String keyword, @Query("page") int page, @Query("per_page") int perPage);

    //    https://json-card.oss-cn-hangzhou.aliyuncs.com/apk_update.json
    @GET("http://devapk.lianglife.com/atm/apk_update.json")
    Observable<Data<CheckUpdate>> checkUpdates();

//    ### 1. 配送员手机验证码登录
//    POST http://rc-app.lianglife.com/login/outerman/phone
//    Content-Type: application/json
//
//    {
//        "phone": "13167119257",
//            "captcha": "000000"
//    }
//
//### 2. 查询订单列表，参数 status：0-待配送/1-配送中/2-已完成
//    GET http://rc-app.lianglife.com/outer/order?pageSize=20&pageNum=1&status=2
//    Content-Type: application/json
//
//### 3. 根据订单id 查询订单详情
//    GET http://rc-app.lianglife.com/outer/order/30400
//
//            ### 4. 更新订单，参数 status：0-待配送/1-配送中/2-已完成
//    PUT http://rc-app.lianglife.com/outer/order/30400?status=2

    /**
     * 获取短信验证码
     *
     * @return
     */
    @GET("sms/captcha")
    Observable<Data> getCaptcha(@Query("phone") String phone);

    /**
     * 配送员手机验证码登录
     *
     * @return
     */
    @POST("login/outerman/phone")
    Observable<Data<UserEntity>> postLogin(@Body RequestBody requestBody);

    /**
     * 查询订单列表，参数 status：0-待配送/1-配送中/2-已完成
     *
     * @return
     */
    @GET("outer/order")
    Observable<Data<ProductChoiceBean>> getOrderList(@Query("pageSize") int pageSize, @Query("pageNum") int pageNum, @Query("status") int status);

    /**
     * 根据订单id 查询订单详情
     *
     * @return
     */
    @GET("outer/order/{id}")
    Observable<Data<List<OrderDetailBean>>> getOrderDetail(@Path("id") String id);

    /**
     * 更新订单，参数 status：0-待配送/1-配送中/2-已完成
     *
     * @return
     */
    @PUT("outer/order/{id}")
    Observable<Data> putOrderStatus(@Path("id") String id, @Query("status") int status);


    /**
     * 支付
     *
     * @return
     */
    @POST("https://shq-api.51fubei.com/gateway")
    Observable<Data<OrderPayBean>> payOrderSwipe(@Body PayRequestBean payRequest);

    /**
     * 订单查询接口
     *
     * @return
     */
    @POST("https://shq-api.51fubei.com/gateway")
    Observable<Data<OrderPayBean>> payOrderQuery(@Body PayRequestBean payRequest);

    /**
     * 消息通知
     *
     * @param requestBody
     * @return
     */
    @POST("order/pay-notice.json")
    Observable<Data<String>> payOrderNotice(@Body RequestBody requestBody);


    /**
     * 查询订单状态
     *
     * @param orderSeq
     * @return
     */
    @GET("order/paid.json")
    Observable<Data<String>> getOrderStatus(@Query("orderSeq") String orderSeq);

    /**
     * 获取会员码
     *
     * @param id
     * @return
     */
    @GET("http://192.168.1.128:8080/buyer/member/{id}")
    Observable<Data<VIPMemberBean>> getMember(@Path("id") String id);
}
